package com.example.messengerapp.repository


import android.content.Context
import android.content.SharedPreferences
import android.util.Log
import android.widget.Toast
import com.google.firebase.auth.FirebaseUser
import com.google.firebase.firestore.FirebaseFirestore
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject

object AuthUtils : KoinComponent {

    private val sharedPreferences: SharedPreferences by inject()

    fun onLoginSuccess(user: FirebaseUser?) {
        user?.let {
            // Сохраняем информацию о пользователе в SharedPreferences
            with(sharedPreferences.edit()) {
                putString("USER_ID", it.uid)
                putString("USER_EMAIL", it.email)
                putString("USER_DISPLAY_NAME", it.displayName)
                apply()
            }

            // Обновляем UI (например, можем показать приветственное сообщение)
            val context: Context by inject()
            Toast.makeText(context,
                "Welcome, ${it.displayName ?: "User"}",
                Toast.LENGTH_SHORT).show()

            // Дополнительно можно запустить какие-либо сервисы или обновить данные в базе данных
            updateUserDataInDatabase(it)
        }
    }

    private fun updateUserDataInDatabase(user: FirebaseUser) {
        // Пример обновления данных пользователя в базе данных Firebase Firestore
        val db = FirebaseFirestore.getInstance()
        val userRef = db.collection("users").document(user.uid)

        val userData = hashMapOf(
            "email" to user.email,
            "displayName" to user.displayName,
            "photoUrl" to user.photoUrl?.toString()
        )

        userRef.set(userData)
            .addOnSuccessListener {
                Log.d("AuthUtils", "User data successfully updated in Firestore")
            }
            .addOnFailureListener { e ->
                Log.w("AuthUtils", "Error updating user data in Firestore", e)
            }
    }
}
